package com.fjec.market.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * <p>
 * 045.服务子订单表
 * </p>
 *
 * @author admin
 * @since 2020-09-21
 */
@Data
@TableName(value = "biz_sub_serv_order", autoResultMap = true)
public class BizSubServOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键Id
     */
    @TableId("Id")
    private Long id;

    /**
     * 订单Id
     */
    @TableField("OrderId")
    private Long orderId;

    /**
     * 服务Id
     */
    @TableField("ServId")
    private Long servId;

    /**
     * 总金额 单位分
     */
    @TableField("Amount")
    private Integer amount;

    /**
     * 实际金额 单位分
     */
    @TableField("RealAmount")
    private Integer realAmount;

    /**
     * 购买数量
     */
    @TableField("Num")
    private Integer num;

    /**
     * 是否使用优惠
     */
    @TableField("UseDisc")
    private Integer useDisc;

    /**
     * 优惠信息 {
     * voucher: [{id: xxxxxxxx, start:2020-08-08 00:00, end: 2020-08-09 00:00}],
     * discount: {start:2020-08-08 00:00, end: 2020-08-09 00:00, discount: 0.8}
     * }
     */
    @TableField("DiscInfo")
    private String discInfo;

    /**
     * 市场编号
     */
    @TableField("MarkCode")
    private Integer markCode;

    /**
     * 商品快照
     */
    @TableField(value = "ServSnapshot", typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> servSnapshot;

    /**
     * 订单详细状态
     * 0=正常
     * 1=退款
     * 2=退货
     */
    @TableField("DetailStatus")
    private Integer detailStatus;

    /**
     * 更新版本号 更新数据版本号
     */
    @TableField("UpdateVer")
    private Integer updateVer;

    /**
     * 删除标记
     * 0=否
     * 1=是
     */
    @TableField("DelFlag")
    private Integer delFlag;

    /**
     * 创建时间
     */
    @TableField("CreateTime")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("UpdateTime")
    private LocalDateTime updateTime;

    /**
     * 订单状态
     * 1=未付款
     * 2=已付款
     */
    @TableField("OrderStatus")
    private Integer orderStatus;

}
